package com.thh.shirodemo.util;

import redis.clients.jedis.Jedis;

import java.util.Random;

/**手机验证码
 * @author shkstart
 * @create 2022-07-25-11:10
 */
public class PhoneCode {
    public static void main(String[] args) {
        //测试随机的验证码
        System.out.println(getCode());
    }
    //1 生成手机验证码
    public static String getCode(){
        Random random = new Random();
        String code="";
        for(int i=0;i<6;i++){
            int rand=random.nextInt(10);
            code+=rand;
        }
        return code;
    }
    //2 每个手机每天只能发送三次,验证码放到redis中，设置过期时间
    public static String verifyCode(String userId){
        //连接redis
        Jedis jedis = new Jedis("192.168.112.100", 6379);
        //拼接key v

        //手机发送次数key
        String countKey="VerifyCode--"+userId+":count";
        //验证码key
        String codeKey="VerifyCode--"+userId+":code";

//        每个手机每天只能发送三次
        String count = jedis.get(countKey);
        if(count==null){
            //没有发送次数 第一次发送
            //设置发送次数是1
            jedis.setex(countKey,24*60*60,"1");
        }else if (Integer.parseInt(count)<=2){
            //发送次数+1
            jedis.incr(codeKey);
        }else{
            jedis.close();
            return ("发送失败!您今天的验证码发送次数超过三次了!");
        }

        //发送验证码到redis中
        String vcode=getCode();
        jedis.setex(codeKey,120,vcode);
        jedis.close();
        return "发送成功请查收!";
    }

    //3.验证码校验
    public static String checkRedisCode(String userId,String code){
        Jedis jedis = new Jedis("192.168.112.100", 6379);
        //从redis中获取验证码
        String codeKey="VerifyCode--"+userId+":code";
        String redisCode=jedis.get(codeKey);
        if(redisCode.equals(code)){
            return "验证码验证成功";
        }
        return "验证码验证失败";
    }
}
